package top.zhangjianyong.tools.model;

import lombok.Data;

import java.math.BigDecimal;

/**
 * @author zhangjianyong
 * @since 2025/5/6 10:35
 */
@Data
public class ETFOpportunity {

    private String code;
    private String name;
    private BigDecimal hcz;
    private BigDecimal slope;
    private BigDecimal r2;
    private BigDecimal rsi;

    /**
     * 判断当前ETF是否满足机会条件：
     * 1. 斜率slope大于0（趋势向上）
     * 2. 拟合优度r2大于0.5（线性拟合较好）
     * 3. 回撤值hcz大于-2（回撤不大）
     * 4. RSI小于70（未过热）
     * @return 是否为机会ETF
     */
    public boolean isOpportunity() {
        return slope.compareTo(BigDecimal.ZERO) > 0
                && r2.compareTo(new BigDecimal("0.5")) > 0
                && hcz.compareTo(new BigDecimal("-2")) > 0
                && rsi.compareTo(new BigDecimal("70")) < 0;
    }

    /**
     * 判断当前ETF是否满足机会条件V2：
     * 1. 斜率slope大于0（趋势向上）
     * 2. 拟合优度r2大于0.5（线性拟合较好）
     * 3. 回撤值hcz小于-20（回撤较大）
     * 4. RSI小于50（更低的热度）
     * @return 是否为机会ETF（V2标准）
     */
    public boolean isOpportunityV2() {
        return slope.compareTo(BigDecimal.ZERO) > 0
                && r2.compareTo(new BigDecimal("0.5")) > 0
                && hcz.compareTo(new BigDecimal("-20")) < 0
                && rsi.compareTo(new BigDecimal("50")) < 0;
    }
}
